速度最適化
概要
すべてのサイトはユニークであり、統合は証明された手順と、特定のサイト要件に基づく注意深い最適化によって構成されるシステムです。このページでは、複数のクライアントおよびベンチマークテストから得られた実績ある手順を紹介します。
このドキュメントに記載された手順を使用することで、Algonomy を最適なレベルで運用できます。各サイトには独自のニーズと課題があり、最適化は Algonomy チームと共に取り組むべきものです。
クライアントのベンチマークテストでは、以下のヒントを実施することでリクエストおよびレスポンス時間の大幅な短縮が見られました:
-
リクエストを早めに、非同期で設定し、リクエスト数は可能な限り少なくする。
-
必要なデータのみを受け取る。
-
圧縮レスポンスを許可する。
リクエストの設定
いつ、どのように Omnichannel Personalization サーバーへリクエストするかは、パフォーマンスに大きな影響を与えます。
JavaScript 統合の場合は、JavaScript 統合の例に従ってください。
API 呼び出しの場合、以下の指針に従ってください:
-
できるだけ早いタイミングで、非同期にリクエストを行う。(これは顧客の統合で最もよく見られるミスです。)
-
リクエストの回数を最小限に抑える。
小さいレスポンスを受け取る
Algonomy のレスポンスに含まれる情報を選択することで、レスポンスサイズを小さくし、処理を高速化できます。
デフォルトでは、recsForPlacements は各商品の多くの詳細情報を返しますが、サイトが必要とする情報はその一部にすぎないかもしれません。たとえば、レスポンス内の JSON オブジェクトのみを使用する場合は、excludeHtml=true を設定することで、各商品に対するフォーマット済み HTML の受信を防げます。
以下の recsForPlacements パラメーターのいずれか、または複数を使用して、不要な情報を Algonomy のレスポンスから除外できます:
パラメーター |
説明 |
---|---|
excludeHtml=true
|
true/false。true に設定すると、Omnichannel Personalization サーバーのレスポンスに含まれる HTML を省略します。false の場合は、レイアウトで設定されたプレースメントの HTML が html フィールド内に含まれます。デフォルト=false。 例:excludeHtml=true |
excludeItemAttributes=true
|
true/false。true に設定すると、推奨商品データから商品属性を削除します。デフォルト=false。 例:excludeItemAttributes=true |
excludeRecItems=true
|
true/false。true に設定すると、推奨商品の構造全体を完全に削除します。これはレスポンス内の HTML のみで十分な場合に便利です。デフォルト=false。 例:excludeRecItems=true |
returnMinimalRecItemData=true
|
true/false。true に設定すると、推奨商品の情報を外部 ID とクリック URL(最小限のアイテム情報)にまで削減します。デフォルト=false。 例:returnMinimalRecItemData=true |
categoryData=false
|
true/false。false に設定すると、レスポンス内のカテゴリデータを省略します。true にすると、categoryIds と categories がレスポンスに含まれます。デフォルト=true。 例:categoryData=false |
圧縮を使用する
サーバーサイド API 呼び出しを使用する場合、圧縮をサポートするサーバーサイド HTTP クライアントを使用することで、リクエスト時間を短縮できます。クライアントサイド API 呼び出しを使用する場合は、顧客のブラウザが自動的に圧縮をサポートします。
技術的な詳細
圧縮をサポートするクライアントへの切り替えは、単純な Java コードの変更で可能です。たとえば、Apache Commons を使用している場合、以下のように:
HttpClient client=new DefaultHttpClient(httpParameters);
の代わりに、以下のように記述します:
HttpClient httpClient=new DefaultHttpClient(httpParameters);
HttpClient client=new DecompressingHttpClient(httpClient);
圧縮に関する詳細は以下の記事をご参照ください: